/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package systole.persistence.brokersInterface;

import java.util.List;
import systole.domain.analysis.Analysis;
import systole.exceptions.ExceptionDAO;
import systole.synchronization.remote.entities.AnalysisRemote;

/**
 *
 * @author jmj
 */
public interface AnalysisSyncBroker {

     /**
     *
     * @param analysisRemote
     * @throws ExceptionDAO
     */
    public void saveAnalysisRemote(AnalysisRemote analysisRemote) throws ExceptionDAO;

  
    /**
     *
     * @return AnalysisRemote list
     * @throws ExceptionDAO
     */
    public List<AnalysisRemote> getAnalysisToUpdate() throws ExceptionDAO;

    /**
     *
     * @return
     * @throws ExceptionDAO
     */
    public List<Analysis> getAnalysisToUpload() throws ExceptionDAO;

    /**
     *
     * @param remoteId
     * @return
     * @throws ExceptionDAO
     */
    public Analysis getAnalysisByRemoteId(int remoteId) throws ExceptionDAO;

    /**
     *
     * @param analysis
     * @return
     * @throws ExceptionDAO
     */
    public AnalysisRemote getAnalysisRemoteByAnalysis(Analysis analysis) throws ExceptionDAO;

    /**
     * 
     * @return
     * @throws ExceptionDAO
     */
    public int getLastRemoteAnalysisIdSynchronized() throws ExceptionDAO;

}
